# -*- coding: utf-8 -*-
# @Time        :2024/11/5 上午10:31
# @Author      :文刀水寿
# @File        : 01_闭包.py
"""
 @Description :演示Python的闭包特性
优点：
    无需定义全局变量既可以实现通过函数，持续的访问，修改某个值
    闭包的使用的变量的所用于在函数内，难以被错误的调用修改
缺点：
    由于内部哈桑农户持续引用外部函数的值，所以会导致这一部分内存空间不被释放，一直占用内存
"""
# 是使用nonlocal关键字修改外部函数的值
def outer1(logo):
    def inner(msg):
        nonlocal logo
        logo += msg
        print(logo)

    return inner


fn = outer1(10)
fn(10)
fn(10)


# 实现ATM小案例


def count(money=0):
    def cun(x):
        nonlocal money
        money += x
        print("余额为：", {money})

    return cun

cun = count(1000)
cun(100)

